package com.song.springcloud.controller;


import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.song.springcloud.pojo.User;
import com.song.springcloud.servcie.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


//提供Restful服务    添加了Hystrix服务熔断处理的 服务提供者 测试
@RestController
public class UserController {

    @Autowired
    private UserService userService;

    // http://localhost:8004/user/get/201722  检查自己表中user_id 值是多少
    // 模拟获取这个服务接口时候，发生运行时异常时就去调用备用方法，返回异常信息，不要中断在这里（Hystrix服务熔断处理）
    @GetMapping("/user/get/{id}")
    @HystrixCommand(fallbackMethod = "hystrixCopyAddUser")
    @ResponseBody
    public User addUser(@PathVariable long id) {
        System.out.println("执行SQL!!!");
        User user = userService.queryUserById(id);
        if (user == null){
            throw new RuntimeException("userId=>"+id+",不存在该用户，或者信息无法找到！");
        }
        return user;
    }

    // 备用方法
    public User hystrixCopyAddUser(@PathVariable long id) {
        return new User()
                .setUserId(id)
                .setUserName("userId=>"+id+"没有对应信息，null ---- @Hystrix 备份处理启用！")
                .setDbSource("no this database in mysql");
    }


}
